package com.unione.unione_protocol.robot_auto

import com.unione.unione_base.bean.BaseRobotRepo
import com.unione.unione_protocol.robot_auto.bean.MapInfo
import com.unione.unione_protocol.robot_auto.bean.RobotInfo
import com.unione.unione_protocol.robot_auto.bean.RoutePoint
import com.unione.unione_protocol.robot_auto.bean.VersionUpdateInfo
import okhttp3.RequestBody
import retrofit2.http.Body
import retrofit2.http.Field
import retrofit2.http.FormUrlEncoded
import retrofit2.http.GET
import retrofit2.http.Headers
import retrofit2.http.POST
import retrofit2.http.PUT
import retrofit2.http.Query

/**
 *  自主接口
 */
interface RobotAutoService {


    /**
     * 获取场景列表
     */
    @GET("getMapList")
    suspend fun getMapList(): BaseRobotRepo<List<MapInfo>>

    /**
     * 获取路网点信息
     */
    @GET("getMapRoadInfo")
    suspend fun getMapRoadInfo(@Query("scene") scene: String): BaseRobotRepo<List<RoutePoint>>

    /**
     *  获取当前状态机器人状态
     */
    @GET("getRobotInfo")
    suspend fun getRobotInfo(): BaseRobotRepo<RobotInfo>

    /**
     *  开启或关闭自主导航
     */
    @PUT("sendAutoCmd")
    @FormUrlEncoded
    suspend fun setAutoMode(
        @Field("cmd") cmd: Int,
        @Field("scene") scene: String,
        @Field("pointId") pointId: String
    ): BaseRobotRepo<Any>


    /**
     *  前往目标点
     */
    @POST("sendToPoint")
    @Headers("Content-Type: application/json; charset=utf-8")
    suspend fun moveToDstPoint(@Body body: RequestBody): BaseRobotRepo<Any>

    /**
     *  一键充电
     */
    @PUT("sendChargeCmd")
    suspend fun oneKeyCharge(): BaseRobotRepo<Any>

    /**
     *  暂停 恢复
     */
    @PUT("sendPauseNavCmd")
    @FormUrlEncoded
    suspend fun setPauseOrResume(@Field("cmd") cmd: Int): BaseRobotRepo<Any>



    /**
     *  三色氛围灯带控制
     *  @param cmd 1.红色 2.呼吸红 3.蓝常亮 4.呼吸蓝 5.绿常亮 6.关闭所有氛围灯 7.青常亮 8.呼吸青 9.黄常亮 10.呼吸黄 11.白常亮 12.呼吸白 13.紫常亮 14.呼吸紫
     */
    @PUT("sendLightCtl")
    @FormUrlEncoded
    suspend fun sendLightCtl(@Field("cmd") cmd: Int): BaseRobotRepo<Any>


    /**
     *  前往目标点(x，y,yaw,scene)
     */
    @POST("toPoint")
    @Headers("Content-Type: application/json; charset=utf-8")
    suspend fun moveToAnyPoint(@Body body: RequestBody): BaseRobotRepo<Any>






}